/**
 * 
 */
package com.lxp.ssh2.web.action;

import java.util.HashMap;
import java.util.Map;

import org.springframework.util.StringUtils;

import com.lxp.ssh2.vo.PageRequest;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @Package com.lxp.ssh2.web.action
 * @Class com.lxp.ssh2.web.action.BaseAction
 * @Description: 为action提供公共的方法
 * @Author LiXiaoPeng
 * @Date 2015年4月25日 下午1:07:42
 * @Version V1.0
 * Copyright  Corporation 2015
 */
public class BaseAction extends ActionSupport {
	
	
	/**
	 * 提交分页参数的时候，参数名必须是：
	 * index :页码 如果不传递或者为空，则默认为1
	 * size  :页大小 如果不传递或者为空，则默认为5
	 * q.xxx :xxx 表示字段名称 ，即查询条件，可以有多个查询条件
	 * 获取分页查询信息
	 * @return
	 */
	protected PageRequest getPageRequest(){
		//获取所有查询参数
		ActionContext ctx=ActionContext.getContext();
		Map<String,Object> parameters=ctx.getParameters();
		
		int index=1;
		String paramIndex=getParameter(parameters.get(PageRequest.PARAM_INDEX));
		if(!StringUtils.isEmpty(paramIndex)){
			index=Integer.valueOf(paramIndex);
		}
		int size=5;
		String paramSize=getParameter(parameters.get(PageRequest.PARAM_SIZE));
		if(!StringUtils.isEmpty(paramSize)){
			size=Integer.valueOf(paramSize);
		}
		PageRequest pageRequest=new PageRequest(index, size);
		
		Map<String,Object> newParameters=new HashMap<>();
		for (Map.Entry<String,Object> entry: parameters.entrySet()) {
			String key=entry.getKey();
			String value=getParameter(entry.getValue());
			newParameters.put(key,value);
		}
		newParameters.put(PageRequest.PARAM_INDEX, index);
		newParameters.put(PageRequest.PARAM_SIZE,size);
		pageRequest.setCondition(newParameters);
		return pageRequest;
	}
	
	private String getParameter(Object param){
		if(param!=null && param instanceof String[]){
			String[] p=(String[])param;
			if(p.length>0){
				return p[0];
			}
		}
		if(param!=null){
			return param.toString();
		}
		return "";
		
	}
	
}
